package other;

import java.util.PriorityQueue;
import java.util.Queue;

/**题目：数据流中的第k大的数
 * @Author Gavin
 * @date 2022.01.03 11:07
 */
public class solution_3 {
    /**
     * 解题思路：使用一个优先级队列来维护topk元素
     */
    private Queue<Integer> minHeap=new PriorityQueue<>();
    private int k;

    public solution_3(int k,int[] nums){
        if(k<nums.length)k=nums.length;
        this.k=k;
        for (int i = 0; i < k; i++) {
            add(nums[i]);
        }
    }
    public int add(int val){
        if(minHeap.size()<k){
            minHeap.add(val);
        }else if(minHeap.peek()<val){
            minHeap.poll();
            minHeap.add(val);
        }
        return minHeap.peek();
    }
}
